const express = require("express");
const router = express.Router();
const userDB = require("../../db/user")
// 鉴权
router.use((req,res,next)=>{
    if (!req.session.userInfo) {
        return res.send({
            code:6,
            msg:'用户未登录'
        })
    }
    next()
})
//用户名修改
router.post("/user",async (req,res)=>{
    let {user} = req.body;
    // 检测数据格式
    if (!/^[\w\u4e00-\u9fa5\u0800-\u4e00\uac00-\ud7ff]{2,12}$/.test(user))
        return res.send({
            code:1,
            msg:'用户名格式错误'
        })
    // 验证新旧用户名是相同
    if(user === req.session.userInfo.user) {
        return res.send({
            code:7,
            msg:'新旧用户名相同'
        })
    }
    // 验证用户名是否已存在
    let doc = await userDB.findOne({user});
    if (doc) {
        return res.send({
            code:2,
            msg:'用户已存在'
        })
    }
   // 修改用户名
    await userDB.findByIdAndUpdate(req.session.userInfo._id,{user})
    // 更新session
    req.session.userInfo.user = user
    res.send ({
        code:0,
        msg:'用户名修改完成',
        data:req.session.userInfo
    })
})
// 密码修改
router.post('/pass',async (req,res)=>{
    let {oldPass,pass} = req.body;
    let _id = req.session.userInfo._id;
    // 验证新密码格式
    if(!/^[\w\[\]\/\\~`|<>,.?;':"{}!@#$%^&*()_+=-]{6,18}$/.test(pass)) {
            return res.send({
                code:1,
                msg:'密码格式错误'
            })
    }
    // 判断旧密码
    let doc = await userDB.findById(_id);
    if(doc.pass !== oldPass) {
        return res.send({
            code:5,
            msg:'原密码不正确'
        })
    }
    // 新密码与旧密码是否相同
    if(oldPass === pass) {
        return  res.send({
            code:8,
            msg:'与原密码相同'
        })
    }
    // 成功修改密码
    await userDB.findByIdAndUpdate(_id,{pass})
    // 销毁session 返回前端
    req.session.destroy();
    res.send({
        code:0,
        msg:'密码修改成功'
    })
})

// 头像上传
router.use('/photo',require('./uploadPhoto'))



module.exports =router;